home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / SNNSV32.ZIP / SNNSv3.2 / xgui / sources / ui_main.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-25  |  9.8 KB  |  369 lines

  1. /*****************************************************************************
  2.   FILE           : ui_main.c
  3.   SHORTNAME      : main.c
  4.   SNNS VERSION   : 3.2
  5.  
  6.   PURPOSE        : contains many widgets to manage xgui of the SNNS
  7.   NOTES          :
  8.  
  9.   AUTHOR         : Tilman Sommer
  10.   DATE           : 1.4.1990
  11.  
  12.   CHANGED BY     : Kai-Uwe Herrmann 27.1.1993
  13.   IDENTIFICATION : @(#)ui_main.c    1.24 4/21/94
  14.   SCCS VERSION   : 1.24
  15.   LAST CHANGE    : 4/21/94
  16.  
  17.              Copyright (c) 1990-1994  SNNS Group, IPVR, Univ. Stuttgart, FRG
  18.  
  19. ******************************************************************************/
  20.  
  21.  
  22. #include "ui.h"
  23.  
  24. #include <stdio.h>
  25. /* for getwd() */
  26. #include <unistd.h>
  27.  
  28. #include <sys/param.h>
  29.  
  30. #include <X11/Shell.h>
  31. #include <X11/cursorfont.h>
  32.  
  33. #include <X11/Xaw/Box.h>
  34. #include <X11/Xaw/Form.h>
  35. #include <X11/Xaw/Cardinals.h>
  36. #include <X11/Xaw/Command.h>
  37. #include <X11/Xaw/SimpleMenu.h>
  38. #include <X11/Xaw/SmeBSB.h>
  39. #include <X11/Xaw/SmeLine.h>
  40.  
  41. #include "glob_typ.h"
  42. #include "ui_mainP.h"
  43. #include "ui_print.h"
  44. #include "ui_layerP.h"
  45. #include "ui_xWidgets.h"
  46. #include "ui_display.h"    /* init */
  47. #include "ui_action.h"     /* init */
  48. #include "ui_key.h"        /* init */
  49. #include "ui_fileP.h"      /* init */
  50. #include "ui_color.h"      /* init */
  51. #include "ui_selection.h"
  52. #include "ui_info.h"
  53. #include "ui_infoP.h"
  54. #include "ui_displwght.h"
  55. #include "ui_inversion.h"
  56. #include "bn_bignet.h"
  57. #include "net_analyzer.h"
  58.  
  59. #include "bn_menu.h"
  60. #include "d3_pannels.h"
  61. #include "d3_global.h"
  62. #include "d3_graph.h"
  63. #include "d3_main.h"
  64. #include "o_graph.h"
  65. #include "cc_main.h"
  66. #include "ui_kohonen.h"
  67.  
  68. #include "snns.xbm"
  69.  
  70. #include "ui_main.ph"
  71.  
  72.  
  73. /*****************************************************************************
  74.   FUNCTION : ui_init
  75.  
  76.   PURPOSE  : do some intialization
  77.   RETURNS  : void
  78.   NOTES    :
  79.  
  80.   UPDATE   : 1.2.1990
  81. ******************************************************************************/
  82.  
  83. static void ui_init (void)
  84.  
  85. {
  86.     ui_sel_initSelectionList();    /* list of selected units */
  87.     ui_displ_initDisplayList();    /* list of xgui displays  */
  88.     ui_layer_initLayerNames();     /* initial layer names */
  89.     ui_key_init();                 /* editor key automata */
  90.     ui_action_init();              /* editor action routines */
  91.     (void) getcwd( ui_pathname, MAXPATHLEN );
  92.  
  93.     XawSimpleMenuAddGlobalActions(ui_appContext); /* for editor menu */
  94. }
  95.  
  96.  
  97. /*****************************************************************************
  98.   FUNCTION : ui_xCreatePanel
  99.  
  100.   PURPOSE  : create info panel
  101.   RETURNS  : void
  102.   NOTES    :
  103.  
  104.   UPDATE   : 27.7.1990
  105. ******************************************************************************/
  106.  
  107. static void ui_xCreatePanel (void)
  108.  
  109. {
  110.     Widget      menuButton, menu, mItem, label;
  111.     Arg        args[10];
  112.     Cardinal    n;
  113.     char        buf[40];
  114.     
  115.     /* action only, if the info panel is not already created */
  116.  
  117.     if (NOT ui_infoIsCreated) {
  118.  
  119.     /* Upper left corner will be in the center of the calling button */
  120.     
  121.     ui_infoBox = 
  122.         XtCreateManagedWidget("form", formWidgetClass, ui_toplevel, NULL, ZERO);
  123.     ui_display  = XtDisplay(ui_infoBox);
  124.  
  125.     ui_xCreateInfoPanel(ui_infoBox); 
  126.  
  127.     n = 0;
  128.     XtSetArg(args[n], XtNleft  , XtChainLeft);   n++;
  129.     XtSetArg(args[n], XtNright , XtChainLeft);   n++;
  130.     XtSetArg(args[n], XtNtop   , XtChainTop);    n++;
  131.     XtSetArg(args[n], XtNbottom, XtChainTop);    n++;    
  132.     XtSetValues(ui_infoPanel, args, n);
  133.     
  134.     menuButton = 
  135.         ui_xCreateMenuButtonItem("windows", ui_infoBox, 
  136.                      NULL, ui_infoPanel);
  137.  
  138.     menu = 
  139.         XtCreatePopupShell("menu", simpleMenuWidgetClass, menuButton,
  140.                    NULL, ZERO);
  141.  
  142.     sprintf(buf,"FILE");
  143.     mItem =
  144.         XtCreateManagedWidget(buf, smeBSBObjectClass, menu,
  145.                   NULL, ZERO);
  146.  
  147.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) ui_displayFilePanel, 
  148.               (Widget) menuButton);
  149.     
  150.     sprintf(buf,"DISPLAY");
  151.     mItem =
  152.         XtCreateManagedWidget(buf, smeBSBObjectClass, menu,
  153.                   NULL, ZERO);
  154.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) ui_displayGraphic, NULL);
  155.  
  156.     sprintf(buf,"3D VIEW");
  157.     mItem =
  158.         XtCreateManagedWidget(buf, smeBSBObjectClass, menu,
  159.                   NULL, ZERO);
  160.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) d3_displayGraphic, NULL);
  161. #ifndef MASPAR_KERNEL
  162.     sprintf(buf,"INVERSION");
  163.     mItem =
  164.         XtCreateManagedWidget(buf, smeBSBObjectClass, menu, NULL, ZERO);
  165.         XtAddCallback(mItem, XtNcallback, (XtCallbackProc) ui_inversion, NULL);
  166. #endif
  167.     sprintf(buf,"WEIGHTS");
  168.     mItem =
  169.         XtCreateManagedWidget(buf, smeBSBObjectClass, menu,
  170.                   NULL, ZERO);
  171.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) ui_displWeights, NULL);
  172.  
  173.         sprintf(buf,"GRAPH");
  174.     mItem =
  175.         XtCreateManagedWidget(buf, smeBSBObjectClass, menu,
  176.                   NULL, ZERO);
  177.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) o_createOszi, NULL); 
  178.  
  179.     sprintf(buf,"REMOTE");
  180.     mItem =
  181.         XtCreateManagedWidget(buf, smeBSBObjectClass, menu,
  182.                   NULL, ZERO);
  183.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) ui_displayRemote, NULL); 
  184.  
  185.     sprintf(buf,"BIGNET");
  186.     mItem =
  187.         XtCreateManagedWidget(buf, smeBSBObjectClass, menu,
  188.                   NULL, ZERO);
  189.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) bn_BignetMenu, (XtPointer) menuButton);
  190.         
  191.     sprintf(buf,"CASCADE");
  192.     mItem =
  193.         XtCreateManagedWidget(buf, smeBSBObjectClass, menu,
  194.                   NULL, ZERO);
  195.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) cc_createWindow, NULL); 
  196.     sprintf(buf,"KOHONEN");
  197.     mItem =
  198.         XtCreateManagedWidget(buf, smeBSBObjectClass, menu,
  199.                   NULL, ZERO);
  200.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) kohonen_createWindow, NULL); 
  201.  
  202.     sprintf(buf,"PRINT");
  203.     mItem =
  204.         XtCreateManagedWidget(buf, smeBSBObjectClass, menu,
  205.                   NULL, ZERO);
  206.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) ui_printNet, NULL);
  207.  
  208.     sprintf(buf,"HELP");
  209.     mItem =
  210.         XtCreateManagedWidget(buf, smeBSBObjectClass, menu,
  211.                   NULL, ZERO);
  212.     XtAddCallback(mItem, XtNcallback, (XtCallbackProc) ui_displayText, NULL);
  213.  
  214.         sprintf(buf,"ANALYZER");
  215.         mItem =
  216.             XtCreateManagedWidget(buf, smeBSBObjectClass, menu,
  217.                                   NULL, ZERO);
  218.         XtAddCallback(mItem, XtNcallback, 
  219.                      (XtCallbackProc) NA_OpenNetworkAnalyzer, NULL);
  220.  
  221.     sprintf(buf,"TEXT");
  222.     /* mItem =
  223.         XtCreateManagedWidget(buf, smeBSBObjectClass, menu,
  224.                      NULL, ZERO);
  225.         */
  226.  
  227.     sprintf(buf,"QUIT");
  228.     mItem = 
  229.         XtCreateManagedWidget(buf, smeBSBObjectClass, menu, 
  230.                   NULL, ZERO);
  231.     XtAddCallback(mItem, XtNcallback, ui_guiQuit, (XtPointer) ui_infoBox);
  232.     
  233.     ui_message = 
  234.         ui_xCreateLabelItem("manMsg", ui_infoBox, 60*8,
  235.                    menuButton, ui_infoPanel);
  236.  
  237. /*    ui_display  = XtDisplay(ui_message);*/
  238.  
  239.     ui_stat_posWidget =
  240.         ui_xCreateLabelItem("*", ui_infoBox, 16*8, NULL, ui_message);
  241.  
  242.     label =
  243.         ui_xCreateLabelItem("noSel", ui_infoBox, 20 /* Icon */, 
  244.                 ui_stat_posWidget, ui_message);
  245.     ui_stat_selNoWidget =
  246.         ui_xCreateLabelItem("*", ui_infoBox, 8*8, label, ui_message);
  247.  
  248.     label =
  249.         ui_xCreateLabelItem("flags", ui_infoBox, 20/* Icon */, 
  250.                 ui_stat_selNoWidget, ui_message);
  251.     ui_stat_flagsWidget =
  252.         ui_xCreateLabelItem("*", ui_infoBox, 15*8, label, ui_message);
  253.  
  254.     XawFormDoLayout(ui_infoBox, True);
  255.     }
  256. }
  257.  
  258.  
  259. /*****************************************************************************
  260.   FUNCTION : ui_clickEventProc
  261.  
  262.   PURPOSE  : 
  263.   RETURNS  : void
  264.   NOTES    :
  265.  
  266.   UPDATE   : 11.2..1992
  267. ******************************************************************************/
  268.  
  269. static void ui_clickEventProc (Widget w, Display *display, XEvent *event)
  270.  
  271. {
  272.     switch (event->type) {
  273.         case ButtonPress:
  274.             if (event->xbutton.button == 1)
  275.                  XtDestroyWidget (w);
  276.             break;
  277.     }
  278. }
  279.  
  280.  
  281. /*****************************************************************************
  282.   FUNCTION : ui_showBanner
  283.  
  284.   PURPOSE  : display Title Page
  285.   RETURNS  : void
  286.   NOTES    :
  287.  
  288.   UPDATE   : 11.2..1992
  289. ******************************************************************************/
  290.  
  291. static void ui_showBanner (Widget parent)
  292.  
  293. {
  294.      int n;
  295.      Arg arg[10];
  296.      Widget banner, frame;
  297.      int xwsize = snns_width;
  298.      int ywsize = snns_height;
  299.      unsigned int xsize, ysize;
  300.  
  301.      d3_getRootSizes (&xsize, &ysize);
  302.      n = 0;
  303.  
  304.      XtSetArg (arg[n], XtNwidth, xwsize); n++;
  305.      XtSetArg (arg[n], XtNheight, ywsize); n++;
  306.      XtSetArg (arg[n], XtNx, (xsize - xwsize) / 2); n++;
  307.      XtSetArg (arg[n], XtNy, (ysize - ywsize) / 2); n++;
  308.      banner = XtCreatePopupShell ("banner", transientShellWidgetClass, 
  309.                                   parent, arg, (unsigned int) n);
  310.      n = 0;
  311.      XtSetArg (arg[n], XtNbitmap, 
  312.                   (Pixmap) XCreateBitmapFromData (ui_display,
  313.                    XDefaultRootWindow (ui_display), 
  314.                    snns_bits, snns_width, snns_height)); n++;
  315.      frame = XtCreateManagedWidget("", labelWidgetClass,
  316.                                    banner, arg, (unsigned int) n);
  317.      XtAddEventHandler (banner, ButtonPressMask, 
  318.                         FALSE, (XtEventHandler) ui_clickEventProc, ui_display);
  319.      XtPopup (banner, XtGrabNone);
  320.      ui_xDontResizeWidget(banner); 
  321. }
  322.  
  323.  
  324. /*****************************************************************************
  325.   FUNCTION : main
  326.  
  327.   PURPOSE  : construct all widgets and windows, realize them 
  328.   RETURNS  : void
  329.   NOTES    :
  330.  
  331.   UPDATE   : 1.4.1990
  332. ******************************************************************************/
  333.  
  334. void main (int argc, char **argv)
  335.  
  336. {
  337.     ui_toplevel = 
  338.     XtAppInitialize(&ui_appContext, "Popup", NULL, ZERO,
  339.             (int *) &argc, argv, fallback_resources, 
  340.             NULL, ZERO);
  341.  
  342.     ui_init(); 
  343.     ui_parseCmdLine(ui_appContext, argc, argv);
  344.     ui_colVar_init();
  345.     ui_xCreatePanel();
  346.     XtRealizeWidget(ui_toplevel);
  347.     ui_xDontResizeWidget(ui_toplevel);
  348.     ui_xCreateGC(XtWindow(ui_toplevel));
  349.     ui_showBanner (ui_toplevel);
  350.     ui_col_init();
  351.     d3_init_main ();
  352.     ui_defaultPrinterValues();
  353.     ui_loadFileFromCommandLine();
  354.     XtAppMainLoop(ui_appContext);
  355. }
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367. /* end of file */
  368. /* lines: 337 */
  369.